import { Component } from 'vue'

type DynamicImportComponent = () => Promise<Component>

export const defaultOrder = 10
export interface PluginChild {
  /** 二级菜单路由名，系统会自动添加前缀 */
  name: string
  /** 动态加载组件函数 */
  component: DynamicImportComponent | Component
  /** 二级路由路径, 系统会在一级路由路径基础上自动添加前缀, 不指定时为 /+name */
  path?: string
  /** 二级菜单标题, 不指定时为 name */
  title?: string
  /** 是否使用页面缓存 */
  keepAlive?: boolean
  /** 是否启用该二级菜单, 系统默认为 true */
  enable?: boolean
}

export interface PluginConfig {
  /** 路由名，系统会自动添加前缀 */
  name: string
  /** 一级路由路径，系统会自动添加前缀, 不指定时值为 /+name */
  path?: string
  /** 一级菜单标题, 不指定时值为 name */
  title?: string
  /** 一级菜单图标 */
  icon?: Component
  /** 是否启用该插件,系统默认将置为 true */
  enable?: boolean
  /** 二级菜单 */
  children: PluginChild[]
  /** 排序,默认10 */
  order?: number
}
